package edu.guet.observer;

import edu.guet.observer.exmple.Boss;
import edu.guet.observer.exmple.NBAObserver;
import edu.guet.observer.exmple.StockObserver;

// 观察者模式定义了一种一对多的依赖关系，让多个观察者对象同时监听某一种主题对象，使他们能够自动的更新自己
// 将一个系统分割成一系列相互协作的类有一个很不好的副作用，那就是需要维护相关对象的一致性。
public class Main {


    public static void main(String[] args) {
        Boss boss = new Boss();

        StockObserver o1 = new StockObserver("张三", boss);
        NBAObserver o2 = new NBAObserver("李四", boss);

        boss.attach(o1);
        boss.attach(o2);

        boss.detach(o1);

        boss.setAction("老板回来了");
        boss.subjectNotify();
    }
}
